package ad_exercise_2.model;

/**
 * Verbindingsklasse
 * 
 * Beschrijft een symmetrische verbinding tussen 2 stations
 * 
 * @author Karen Berntsen (s0815799)
 * @author Erik Stens (s0615374)
 * 
 */
public class Verbinding {
	private Station	station1;
	private Station	station2;
	private int		afstand;
	
	public Verbinding(Station station1, Station station2, int afstand) {
		this.station1 = station1;
		this.station2 = station2;
		this.afstand = afstand;
	}
	
	/**
	 * De equals methode wordt hier gedefinieerd voor twee verbindingen. Hierbij maakt het niet uit welk station aan welke variabele is toegekend. Ook is een verbinding alleen gelijk, als de afstanden gelijk zijn; er kunnen theoretisch
	 * gezien namelijk twee sporen bestaan tussen twee stations met een andere afstand.
	 * 
	 */
	@Override
	public boolean equals(Object o) {
		if (this.getClass() == o.getClass()) {
			Verbinding verbinding = (Verbinding) o;
			
			if ((station1.equals(verbinding.station1) && station2.equals(verbinding.station2) || station1.equals(verbinding.station2) && station2.equals(verbinding.station1)) && afstand == verbinding.getAfstand())
				return true;
		}
		return false;
	}
	
	public Station getStation1() {
		return station1;
	}
	
	public Station getStation2() {
		return station2;
	}
	
	public int getAfstand() {
		return afstand;
	}
	
	public boolean contains(Station station) {
		if (station1.equals(station) || station2.equals(station))
			return true;
		else
			return false;
	}
	
	/**
	 * Deze functie geeft het tweede station terug op basis van het opgegeven station en null als het eerste station niet in de verbinding voorkomt.
	 * 
	 * @param station
	 * @return
	 */
	public Station getOtherStation(Station station) {
		if (station1.equals(station))
			return station2;
		else if (station2.equals(station))
			return station1;
		else
			return null;
	}
}
